﻿#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
//int main()
//{
//	FILE* ptr_file = fopen("C:\\Users\\17601\\Desktop\\节日复制.jpg", "r");//打开文件读
//	if (ptr_file == NULL)//检测是否打开成功 返回类型是指针 若打开失败则返回空指针
//	{
//		perror("ptr_file");//打印错误信息 需要stdlib的头文件
//		return EXIT_FAILURE; //打印错误信息 需要stdlib的头文件
//	}
//	//文件操作.....
//
//	fclose(ptr_file);//关闭文件
//	ptr_file == NULL;//置为NULL 防止野指针
//
//	return 0;
//}

//fgetc fgets r模式
/*
char *fgets(
char *str,                  //位置
int numChars,               //最大字符数
FILE *stream );             //流名称

int fgetc( FILE *stream)
*/
//int main()
//{
//	FILE* pFILE = fopen("myfile.txt", "r");
//	char buffer[24];
//	if (pFILE == NULL)
//	{
//		perror("pFILE");
//		return EXIT_FAILURE;
//	}
//
//	while (fgets(buffer, sizeof(buffer), pFILE) != NULL)
//	{
//		printf("%s", buffer);
//	}
//	rewind(pFILE);//将文件指针移到文件开头
//	puts("********fgetc*********");
//	int ch;
//	while ( (ch = fgetc(pFILE)) != EOF)
//	{
//		putchar(ch);
//	}
//	memset(buffer, 0, sizeof(buffer));//清理缓存区
//	fclose(pFILE);
//	pFILE = NULL;
//	return 0;
//}

//fputs fputc w
/*
fputc：                              
int fputc(
int c,                                //要写入的字符
FILE *stream );

fputs：                                将字符串写入流
int fputs( const char *str, FILE *stream );
*/

//int main()
//{
//	FILE* pfile = fopen("myfile.txt", "w");
//	if (pfile == NULL)
//	{
//		perror("pfile");
//		return EXIT_FAILURE;
//	}
//
//	//fputc('H', pfile);
//	//fputc('i', pfile);
//	//fputc('!', pfile);
//
//	//fputs("This is myfile.",pfile);
//
//	//fprintf(pfile,"\nnum:%d height:%.2f ", 24, 24.8);
//
//	puts("success!");
//
//	fclose(pfile);
//	pfile == NULL;
//
//	return EXIT_SUCCESS;
//}

/*
*   将设置格式的数据写入字符串
	int sprintf(char *buffer,const char *format [, argument] ...);
	从字符串中读取格式化数据
	int sscanf(const char *buffer,const char *format [,argument ] ...);

	VS给了更安全的版本....._s
*/
//
//typedef struct Student
//{
//	int age;
//	char name[20];
//	double score;
//}Stu;
//int main()
//{
//	Stu kunkun = { .score = 2.5f, .name = "xiaoheizi", .age = 25 };
//	char arr[81];
//
//	sprintf(arr, "%d %s %.2f", kunkun.age, kunkun.name, kunkun.score);
//	printf("%s\n", arr);
//
//	Stu tmp = { 0 };
//	int ret = sscanf(arr, "%d %s %lf", &(tmp.age), tmp.name, &(tmp.score));
//	if(ret) printf("%s %d %f\n", tmp.name, tmp.age, tmp.score);
//
//	return 0;
//}
//
//int main()
//{
//	FILE* pfile = fopen("myfile.txt", "w+");
//	if (pfile == NULL)
//	{
//		perror("pfile");
//		return EXIT_FAILURE;
//	}
//	float fp;
//	char s[81];
//	int i;
//	fprintf(pfile,"%d %s %.2f ", 24,"hi" ,24.8);
//
//	fseek(pfile, 0L, SEEK_SET);
//
//	fscanf(pfile, "%d", &i);
//	fscanf(pfile, "%s", &s);
//	fscanf(pfile, "%f", &fp);
//
//
//	printf("%d\n%s\n%f\n", i, s, fp);
//
//	fclose(pfile);
//	pfile == NULL;
//
//	return EXIT_SUCCESS;
//}

/*
	fseek：                                        将文件指针移动到指定位置
	int fseek(
	FILE *stream,
	long offset,                                //来自源的字节数
	int origin );                                 //初始位置

	ftell：                       获取文件指针的当前位置
	long ftell( FILE *stream );

*/

//int main()
//{
//	FILE* ptr_file = fopen("myfile.txt", "r+");
//	if (ptr_file == NULL)
//	{
//		perror("ptr_file");
//		return 1;
//	}
//
//	long ptr_start = ftell(ptr_file);//记录指针初始位置
//	printf("%ld\n", ptr_start);
//
//	fputs("hello  ", ptr_file);
//
//	long now_ptr = ftell(ptr_file);//记录指针当前位置
//	printf("%ld\n", now_ptr);
//
//	rewind(ptr_file);//指针回到文件开头
//
//	fseek(ptr_file, 4, SEEK_SET);
//	fputs("CS!  ", ptr_file);
//
//	rewind(ptr_file);//指针回到文件开头
//	
//	fclose(ptr_file);
//	ptr_file = NULL;
//
//	return 0;
//}
//
//int main()
//{
//	char buffer[64];
//
//	FILE* stream = fopen("myfile.txt", "r");
//	//这个错误检测是在打开文件的时候
//	if (stream == NULL)
//	{
//		perror("error opening the file!");
//		return EXIT_FAILURE;
//	}
//
//	while (fgets(buffer, sizeof(buffer), stream) != NULL)
//	{
//		printf("%s", buffer);
//	}
//	if (ferror(stream))
//	{
//		perror("error!");
//		clearerr(stream);
//	}
//	//这个错误检测是在文件已经打开，在读取的时候
//	//判断是否因为遇到文件结尾而结束
//	if (feof(stream))
//	{
//		printf("\nSuccessfully reached the end of file!\n");
//	}
//	else
//	{
//		printf("\nfailuring reached the end of file!\n");
//
//	}
//	fclose(stream);
//	stream = NULL;
//
//	return 0;
//}
/*
fwrite： 将数据写入流
size_t fwrite(
const void *buffer,
size_t size,						//项目大小，字节为单位
size_t count,                      //要写入的最大项目数
FILE *stream );

fread：  从流中读取数据
size_t fread(                                      
void *buffer,
size_t size,                       //项目大小，字节为单位
size_t count,                     //要读取的最大项目数
FILE *stream );


*/
//
//int main()
//{
//	char buffer[1024];
//	size_t bytes_read;
//
//	FILE* source_ptr = fopen("C:\\Users\\17601\\Desktop\\节日.jpg", "rb");
//	if (source_ptr == NULL)
//	{
//		printf("error opening!");
//		return EXIT_FAILURE;
//	}
//
//	FILE* tagert_ptr = fopen("C:\\Users\\17601\\Desktop\\节日复制.jpg", "wb");
//	if (tagert_ptr == NULL)
//	{
//		printf("error opening!");
//		return EXIT_FAILURE;
//	}
//
//	while ((bytes_read = fread(buffer, 1, sizeof(buffer), source_ptr)) > 0)
//	{
//		fwrite(buffer, 1, sizeof(buffer), tagert_ptr);
//	}
//	_fcloseall();
//
//	puts("文件复制完成！");
//
//	return 0;
//}

